home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / JAVA / LANG / StringBuffer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  3.6 KB  |  256 lines

  1. package java.lang;
  2.  
  3. public final class StringBuffer {
  4.    private char[] value;
  5.    private int count;
  6.    private boolean shared;
  7.  
  8.    public StringBuffer() {
  9.       this(16);
  10.    }
  11.  
  12.    public StringBuffer(int var1) {
  13.       this.value = new char[var1];
  14.       this.shared = false;
  15.    }
  16.  
  17.    public StringBuffer(String var1) {
  18.       this(var1.count + 16);
  19.       this.append(var1);
  20.    }
  21.  
  22.    public int length() {
  23.       return this.count;
  24.    }
  25.  
  26.    public int capacity() {
  27.       return this.value.length;
  28.    }
  29.  
  30.    private final void copyWhenShared() {
  31.       if (this.shared) {
  32.          char[] var1 = new char[this.value.length];
  33.          System.arraycopy(this.value, 0, var1, 0, this.count);
  34.          this.value = var1;
  35.          this.shared = false;
  36.       }
  37.  
  38.    }
  39.  
  40.    public synchronized void ensureCapacity(int var1) {
  41.       int var2 = this.value.length;
  42.       if (var1 > var2) {
  43.          int var3 = (var2 + 1) * 2;
  44.          if (var1 > var3) {
  45.             var3 = var1;
  46.          }
  47.  
  48.          char[] var4 = new char[var3];
  49.          System.arraycopy(this.value, 0, var4, 0, this.count);
  50.          this.value = var4;
  51.          this.shared = false;
  52.       }
  53.  
  54.    }
  55.  
  56.    public synchronized void setLength(int var1) {
  57.       if (var1 < 0) {
  58.          throw new StringIndexOutOfBoundsException(var1);
  59.       } else {
  60.          this.ensureCapacity(var1);
  61.          if (this.count < var1) {
  62.             this.copyWhenShared();
  63.  
  64.             while(this.count < var1) {
  65.                this.value[this.count] = 0;
  66.                ++this.count;
  67.             }
  68.          }
  69.  
  70.          this.count = var1;
  71.       }
  72.    }
  73.  
  74.    public synchronized char charAt(int var1) {
  75.       if (var1 >= 0 && var1 < this.count) {
  76.          return this.value[var1];
  77.       } else {
  78.          throw new StringIndexOutOfBoundsException(var1);
  79.       }
  80.    }
  81.  
  82.    public synchronized void getChars(int var1, int var2, char[] var3, int var4) {
  83.       if (var1 >= 0 && var1 < this.count) {
  84.          if (var2 >= 0 && var2 <= this.count) {
  85.             if (var1 < var2) {
  86.                System.arraycopy(this.value, var1, var3, var4, var2 - var1);
  87.             }
  88.  
  89.          } else {
  90.             throw new StringIndexOutOfBoundsException(var2);
  91.          }
  92.       } else {
  93.          throw new StringIndexOutOfBoundsException(var1);
  94.       }
  95.    }
  96.  
  97.    public synchronized void setCharAt(int var1, char var2) {
  98.       if (var1 >= 0 && var1 < this.count) {
  99.          this.copyWhenShared();
  100.          this.value[var1] = var2;
  101.       } else {
  102.          throw new StringIndexOutOfBoundsException(var1);
  103.       }
  104.    }
  105.  
  106.    public synchronized StringBuffer append(Object var1) {
  107.       return this.append(var1 == null ? "null" : var1.toString());
  108.    }
  109.  
  110.    public synchronized StringBuffer append(String var1) {
  111.       if (var1 == null) {
  112.          var1 = var1 == null ? "null" : var1.toString();
  113.       }
  114.  
  115.       int var2 = var1.count;
  116.       this.ensureCapacity(this.count + var2);
  117.       this.copyWhenShared();
  118.       char[] var3 = this.value;
  119.       int var4 = this.count;
  120.       System.arraycopy(var1.value, var1.offset, var3, var4, var2);
  121.       this.count += var2;
  122.       return this;
  123.    }
  124.  
  125.    public synchronized StringBuffer append(char[] var1) {
  126.       int var2 = var1.length;
  127.       this.ensureCapacity(this.count + var2);
  128.       this.copyWhenShared();
  129.       System.arraycopy(var1, 0, this.value, this.count, var2);
  130.       this.count += var2;
  131.       return this;
  132.    }
  133.  
  134.    public synchronized StringBuffer append(char[] var1, int var2, int var3) {
  135.       this.ensureCapacity(this.count + var3);
  136.       this.copyWhenShared();
  137.       System.arraycopy(var1, var2, this.value, this.count, var3);
  138.       this.count += var3;
  139.       return this;
  140.    }
  141.  
  142.    public StringBuffer append(boolean var1) {
  143.       return this.append(var1 ? "true" : "false");
  144.    }
  145.  
  146.    public synchronized StringBuffer append(char var1) {
  147.       this.ensureCapacity(this.count + 1);
  148.       this.copyWhenShared();
  149.       this.value[this.count++] = var1;
  150.       return this;
  151.    }
  152.  
  153.    public StringBuffer append(int var1) {
  154.       return this.append(Integer.toString(var1, 10));
  155.    }
  156.  
  157.    public StringBuffer append(long var1) {
  158.       return this.append(Long.toString(var1, 10));
  159.    }
  160.  
  161.    public StringBuffer append(float var1) {
  162.       return this.append(Float.toString(var1));
  163.    }
  164.  
  165.    public StringBuffer append(double var1) {
  166.       return this.append(Double.toString(var1));
  167.    }
  168.  
  169.    public synchronized StringBuffer insert(int var1, Object var2) {
  170.       return this.insert(var1, var2 == null ? "null" : var2.toString());
  171.    }
  172.  
  173.    public synchronized StringBuffer insert(int var1, String var2) {
  174.       if (var1 >= 0 && var1 <= this.count) {
  175.          int var3 = var2.count;
  176.          this.ensureCapacity(this.count + var3);
  177.          this.copyWhenShared();
  178.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  179.          char[] var4 = this.value;
  180.          System.arraycopy(var2.value, var2.offset, var4, var1, var3);
  181.          this.count += var3;
  182.          return this;
  183.       } else {
  184.          throw new StringIndexOutOfBoundsException();
  185.       }
  186.    }
  187.  
  188.    public synchronized StringBuffer insert(int var1, char[] var2) {
  189.       if (var1 >= 0 && var1 <= this.count) {
  190.          int var3 = var2.length;
  191.          this.ensureCapacity(this.count + var3);
  192.          this.copyWhenShared();
  193.          System.arraycopy(this.value, var1, this.value, var1 + var3, this.count - var1);
  194.          System.arraycopy(var2, 0, this.value, var1, var3);
  195.          this.count += var3;
  196.          return this;
  197.       } else {
  198.          throw new StringIndexOutOfBoundsException();
  199.       }
  200.    }
  201.  
  202.    public StringBuffer insert(int var1, boolean var2) {
  203.       return this.insert(var1, var2 ? "true" : "false");
  204.    }
  205.  
  206.    public synchronized StringBuffer insert(int var1, char var2) {
  207.       this.ensureCapacity(this.count + 1);
  208.       this.copyWhenShared();
  209.       System.arraycopy(this.value, var1, this.value, var1 + 1, this.count - var1);
  210.       this.value[var1] = var2;
  211.       ++this.count;
  212.       return this;
  213.    }
  214.  
  215.    public StringBuffer insert(int var1, int var2) {
  216.       return this.insert(var1, Integer.toString(var2, 10));
  217.    }
  218.  
  219.    public StringBuffer insert(int var1, long var2) {
  220.       return this.insert(var1, Long.toString(var2, 10));
  221.    }
  222.  
  223.    public StringBuffer insert(int var1, float var2) {
  224.       return this.insert(var1, Float.toString(var2));
  225.    }
  226.  
  227.    public StringBuffer insert(int var1, double var2) {
  228.       return this.insert(var1, Double.toString(var2));
  229.    }
  230.  
  231.    public synchronized StringBuffer reverse() {
  232.       this.copyWhenShared();
  233.       int var1 = this.count - 1;
  234.  
  235.       for(int var2 = var1 - 1 >> 1; var2 >= 0; --var2) {
  236.          char var3 = this.value[var2];
  237.          this.value[var2] = this.value[var1 - var2];
  238.          this.value[var1 - var2] = var3;
  239.       }
  240.  
  241.       return this;
  242.    }
  243.  
  244.    public String toString() {
  245.       return new String(this);
  246.    }
  247.  
  248.    final void setShared() {
  249.       this.shared = true;
  250.    }
  251.  
  252.    final char[] getValue() {
  253.       return this.value;
  254.    }
  255. }
  256.